<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
    //     var prices = [5.99, 2.99, 3.99, 11.59]
    //     // `       1. 求和 
    //     prices.reduce(function(prev,item){
    //         console.log(prev)   // 没有传 init prev 就是数组下标0对应的元素
    //         // 5.99
    //     })


    //     var rows = [[2, 3, 5], [1, 2, 4], [8, 5, 5]]
    //     // 2.转成一维数组 
    //     rows.reduce(function(prev,item){
    //         console.log(prev) // [2,3,5]
    //     })

    //     var strs = ['wall', 'eye', 'knee'];

    //     // 3.拼接字符串 
        
    //     strs.reduce(function(prev,item){
    //         console.log(prev) // wall
    //     })






    //     var  apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
    // // 4.统计每个元素出现的次数
    //     apples.reduce(function(prev,item){
    //         console.log(prev) // green
    //     })

    // var prices = [5.99, 2.99, 3.99, 11.59]
    //     // `       1. 求和 
    //     prices.reduce(function(prev,item){
    //         console.log(prev)   // 996
    //     },996);


    //     var rows = [[2, 3, 5], [1, 2, 4], [8, 5, 5]]
    //     // 2.转成一维数组 
    //     rows.reduce(function(prev,item){
    //         console.log(prev)  // [6,6,6]
    //     },[6,6,6])

    //     var strs = ['wall', 'eye', 'knee'];

    //     // 3.拼接字符串 
        
    //     strs.reduce(function(prev,item){
    //         console.log(prev) // haha
    //     },'haha')






    //     var  apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
    // // 4.统计每个元素出现的次数
    //     apples.reduce(function(prev,item){
    //         console.log(prev) // {'hello':'world'}
    //     },{'hello':'world'})


    var prices = [5.99, 2.99, 3.99, 11.59];
        // `       1. 求和 
        var res = prices.reduce(function(prev,item){
            return prev+item
        });

        console.log(res)

        // [1,2,3].concat([2, 3, 5], [1, 2, 4], [8, 5, 5]) => [1,2,3,2,3,5,1,2,4,8,5,5]
        //[].concat([2, 3, 5], [1, 2, 4], [8, 5, 5])
        var rows = [[2, 3, 5], [1, 2, 4], [8, 5, 5]]
        // 2.转成一维数组 
        var data1 = rows.reduce(function(prev,item){
            return prev.concat(item)
        },[])
        console.log(data1);

        var strs = ['wall', 'eye', 'knee'];

        // 3.拼接字符串 
        
        var data2 = strs.reduce(function(prev,item){
           return prev+item
        },'')

        console.log(data2);






      var apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
    // // 4.统计每个元素出现的次数
       var data3 =  apples.reduce(function(prev,item){
            // console.log(prev) // {'hello':'world'}
            if(prev[item]){  //隐式转换  undefined -> false 
                prev[item]++
            }
            else{
                prev[item] = 1  // green:3,red:3,yellow:2,
            }
            return prev;   // 别忘了返回 
        },{})
        console.log(data3)

    // var test ={name:'zhangsan ',age:18}
    // // alert('name' in test) true 
    // // false
    // alert(test['name'])// 'zhangsan'
    // alert(test['height']) // undefined


    var students = [{
            'name': 'Larry Goodwin',
            'age': 19,
            'score': 91,
            'gender': '女',
            'tel': '15300022831'
        },
        {
            'name': 'Cecelia Malone',
            'age': 20,
            'score': 40,
            'gender': '男',
            'tel': '15300022832'
        },
        {
            'name': '华仔',
            'age': 11,
            'score': 67,
            'gender': '女',
            'tel': '15300022833'
        },
        {
            'name': '静静',
            'age': 16,
            'score': 90,
            'gender': '不明',
            'tel': '15300022424'
        },
        {
            'name': 'Tom',
            'age': 17,
            'score': 59,
            'gender': '不明',
            'tel': '15300022835'
        },
        {
            'name': 'Bob',
            'age': 18,
            'score': 90,
            'gender': '男',
            'tel': '15300022836'
        }
        ];

        var res_data = students.reduce(function(prev,item){
            return prev+item['score']
        });

        console.log(res_data) // [object Object]4067905990
        // 没有传init 所以prev的结果是  [object Object]


        // 最终结果错误

        var res_data = students.reduce(function(prev,item){
            return prev+item['score']
        },0);

        console.log(res_data)
    </script>
</body>

</html>